<%# The license inside this block applies to this file.
	# Copyright 2019 Google Inc.
	# Licensed under the Apache License, Version 2.0 (the "License");
	# you may not use this file except in compliance with the License.
	# You may obtain a copy of the License at
	#
	#     http://www.apache.org/licenses/LICENSE-2.0
	#
	# Unless required by applicable law or agreed to in writing, software
	# distributed under the License is distributed on an "AS IS" BASIS,
	# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	# See the License for the specific language governing permissions and
	# limitations under the License.
-%>
	// Return object for modifyMembershipRoles (we build request object from scratch, without using `obj`)
	b, a := d.GetChange("roles")
	before := b.(*schema.Set)
	after := a.(*schema.Set)
	// ref: https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/modifyMembershipRoles#request-body
	addRoles := after.Difference(before).List()
	var removeRoles []string
	for _, r := range before.Difference(after).List() {
		removeRoles = append(removeRoles, r.(map[string]interface{})["name"].(string))
	}
	req := map[string]interface{}{"addRoles": addRoles, "removeRoles": removeRoles}
	return req, nil
